package cn.abcsys.cloud.devops.web.service;

import java.sql.SQLException;
import java.util.List;

import cn.abcsys.cloud.devops.web.entity.GridBean;
import cn.abcsys.cloud.devops.web.entity.PagerModel;
import cn.abcsys.cloud.devops.web.entity.Role;
import cn.abcsys.cloud.devops.web.entity.RoleAction;
import cn.abcsys.cloud.devops.web.entity.User;
import cn.abcsys.cloud.devops.web.entity.UserRoleEnvProj;

/**
 * @author xzg
 * 角色相关的服务接口
 *
 */
public interface RoleService {

	/**
	 * 查询用户下可以操作的角色信息
	 * @return
	 */
	public List<Role> getRolePermmitMod(User user);
	
	/**
	 * 增加角色信息
	 * @param role
	 * @return
	 */
	public int addRole(Role role) throws SQLException;
	
	/**
	 * 增加用户角色信息
	 * @param ure
	 * @return
	 */
	public int addUserRole(List<UserRoleEnvProj> userRoleEnvs);
	
	
	/**
	 * 删除用户
	 * @param roleId
	 * @return
	 */
	public int deleteRoleById(Integer roleId);
	
	/**
	 * 为角色增加权限
	 * @param roleAction
	 * @return
	 */
	public int addRoleAuthority(List<RoleAction> roleActions);
	
	
	/**
	 * 修改角色信息
	 * @param role
	 * @return
	 * @throws SQLException
	 */
	public int updateRoleById(Role role) throws SQLException;
	
	/**
	 * 批量删除角色权限
	 * @param list
	 * @return
	 * @throws SQLException
	 */
	public int deleteRoleAction(List<Integer> list) throws SQLException;
	
	/**
	 * 角色查询
	 * @return
	 * @throws SQLException
	 */
	//public List<Role> getRoleByName(Role role) throws SQLException;
	
	/**
	 * 
	 * @return
	 */
	public GridBean getRoleByName(Role role,PagerModel pagerModel) throws SQLException;

	/**
	 * 为用户增加角色环境信息
	 * @return
	 */
	public int addRoleUserEnv(UserRoleEnvProj ure);
	
	/**
	 * 为角色赋予权限
	 * @param roleAction
	 * @return
	 */
	//public int addRoleAction(RoleAction roleAction);
	
	/**
	 * 批量增加权限信息
	 * @param roleActionList
	 * @return
	 */
	public int addRoleActions(List<RoleAction> roleActionList);
	
	/**
	 * 查询用户所在环境的角色信息
	 * @param ure
	 * @return
	 */
	public List<Role> getRoleByUserEnv(UserRoleEnvProj ure);
	
	
	/**
	 * 根据环境插入
	 * @param info
	 * @return
	 */
	/*
	public int insertRoleProjectInfo(List<Map<String,Object>> info);*/
	
	/**
	 * 根据用户Id和环境Id解除相关的项目和角色信息
	 * @param user
	 * @param envId
	 * @throws SQLException
	 */
	//public void deleteUserEnvRoleProj(Integer userId,Integer envId) throws SQLException;
}
